using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeostatisticalAnalystTools._WorkingwithGeostatisticalLayers
{
    /// <summary>
    /// <para>GA Layer To Points</para>
    /// <para>Exports a geostatistical layer to points. The tool can also be used to predict values at unmeasured locations or to validate predictions made at measured locations.</para>
    /// <para>将地统计图层导出为点。该工具还可用于预测未测量位置的值或验证在测量位置进行的预测。</para>
    /// </summary>    
    [DisplayName("GA Layer To Points")]
    public class GALayerToPoints : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GALayerToPoints()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_geostat_layer">
        /// <para>Input geostatistical layer</para>
        /// <para>The geostatistical layer to be analyzed.</para>
        /// <para>要分析的地统计图层。</para>
        /// </param>
        /// <param name="_in_locations">
        /// <para>Input point observation locations</para>
        /// <para>Point locations where predictions or validations will be performed.</para>
        /// <para>将执行预测或验证的点位置。</para>
        /// </param>
        /// <param name="_out_feature_class">
        /// <para>Output statistics at point locations</para>
        /// <para><xdoc>
        ///   <para>The output feature class containing either the predictions or the predictions and the validation results.</para>
        ///   <para>The fields in this feature class can include the following fields (where applicable):</para>
        ///   <bulletList>
        ///     <bullet_item>Source_ID (Source ID)—The object ID of the source feature in the Input point observation locations.
        ///     <bulletList>
        ///       <bullet_item>The feature or object identifier of the input dataset that was used.  </bullet_item></bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Included (Included)—Indicates whether a prediction was calculated for this feature. The values in this field can be one of the following:
        ///     <bulletList>
        ///       <bullet_item>Yes—There are no problems making a prediction at this point.  </bullet_item><para/>
        ///       <bullet_item>Not enough neighbors—There are not enough neighbors to make a prediction.  </bullet_item><para/>
        ///       <bullet_item>Weight parameter is too small—The weight parameter is too small.  </bullet_item><para/>
        ///       <bullet_item>Overfilling—Overflow of floating-point calculations.  </bullet_item><para/>
        ///       <bullet_item>Problem with data transformation—The value to be transformed is outside of the supported range for the selected transformation (only in kriging).  </bullet_item><para/>
        ///       <bullet_item>No explanatory rasters—The value cannot be calculated because one of the explanatory variables is not defined. The point could be outside the extent of at least one explanatory variable raster, or the point could be on top of a NoData cell in at least one of the explanatory variable rasters. This only applies to EBK Regression Prediction models.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Predicted (Predicted)—The prediction value at this location.</bullet_item><para/>
        ///     <bullet_item>Error (Error)—The predicted value minus the value in the validation field.</bullet_item><para/>
        ///     <bullet_item>StdError (Standard Error)—The kriging standard error.</bullet_item><para/>
        ///     <bullet_item>Stdd_Error (Standardized Error)—The standardized prediction errors. Ideally, the standardized prediction errors are distributed normally.</bullet_item><para/>
        ///     <bullet_item>NormValue (Normal Value)—The normal distribution value (x-axis) that corresponds to the standardized prediction errors (y-axis) in the normal QQplot.</bullet_item><para/>
        ///     <bullet_item>CRPS (Continuous Ranked Probability Score)—The continuous ranked probability score is a diagnostic that measures the deviation from the predictive cumulative distribution function to each observed data value. This value should be as small as possible. This diagnostic has advantages over cross-validation diagnostics because it compares the data to a full distribution rather than to single-point predictions. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models.</bullet_item><para/>
        ///     <bullet_item>Interval90 (Inside 90 Percent Interval)—Indicates whether or not the validation point is inside of a 90 percent confidence interval. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models. If the model fits the data, approximately 90 percent of the features should be contained in a 90 percent confidence interval. This field can contain the following values:
        ///     <bulletList>
        ///       <bullet_item>Yes—The validation point is inside the 90 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>No—The validation point is not inside the 90 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>Excluded—A prediction cannot be made at this location.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Interval95 (Inside 95 Percent Interval)—Indicates whether or not the validation point is inside of a 95 percent confidence interval. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models. If the model fits the data, approximately 95 percent of the features should be contained in a 95 percent confidence interval. This field can contain the following values:
        ///     <bulletList>
        ///       <bullet_item>Yes—The validation point is inside the 95 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>No—The validation point is not inside the 95 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>Excluded—A prediction cannot be made at this location.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>QuanVal (Validation Quantile)—The quantile of the measured value at the feature with respect to the prediction distribution. This value can range from 0 to 1, and values close to 0 indicate that the measured value is on the far left tail of the distribution, and values close to 1 indicate that the measured value is on the right tail of the distribution. If many values are close to either extreme, this could indicate that the prediction distributions do not model the data well, and some of the interpolation parameters need to be altered. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>包含预测或预测和验证结果的输出要素类。</para>
        ///   <para>此要素类中的字段可以包含以下字段（如果适用）：</para>
        ///   <bulletList>
        /// <bullet_item>Source_ID （源 ID） - 输入点观测点位置中源要素的对象 ID。
        ///     <bulletList>
        /// <bullet_item>所使用的输入数据集的特征或对象标识符。 </bullet_item></bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>包含 （Included） - 指示是否为此要素计算了预测。此字段中的值可以是下列值之一：
        ///     <bulletList>
        ///       <bullet_item>是 - 此时进行预测没有问题。</bullet_item><para/>
        ///       <bullet_item>没有足够的邻居 - 没有足够的邻居来做出预测。</bullet_item><para/>
        ///       <bullet_item>权重参数太小 - 权重参数太小。</bullet_item><para/>
        ///       <bullet_item>Overfilling - 浮点计算的溢出。</bullet_item><para/>
        ///       <bullet_item>数据转换问题 - 要转换的值超出了所选转换的支持范围（仅在克里金法中）。</bullet_item><para/>
        ///       <bullet_item>无解释性栅格 - 由于未定义其中一个解释变量，因此无法计算该值。该点可能位于至少一个解释变量栅格的范围之外，或者该点可能位于至少一个解释变量栅格中的 NoData 像元的顶部。这仅适用于 EBK 回归预测模型。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>预测 （Predicted） - 此位置的预测值。</bullet_item><para/>
        ///     <bullet_item>错误（错误）- 预测值减去验证字段中的值。</bullet_item><para/>
        ///     <bullet_item>StdError （Standard Error） - 克里金法标准误差。</bullet_item><para/>
        ///     <bullet_item>Stdd_Error （Standardized Error） - 标准化预测误差。理想情况下，标准化预测误差呈正态分布。</bullet_item><para/>
        ///     <bullet_item>NormValue （Normal Value） - 与正态 QQplot 中的标准化预测误差（y 轴）相对应的正态分布值（x 轴）。</bullet_item><para/>
        ///     <bullet_item>CRPS（连续排名概率分数）- 连续排名概率分数是一种诊断方法，用于测量预测累积分布函数与每个观测数据值的偏差。此值应尽可能小。与交叉验证诊断相比，此诊断具有优势，因为它将数据与完整分布进行比较，而不是与单点预测进行比较。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。</bullet_item><para/>
        /// <bullet_item>Interval90 （Inside 90 Interval） - 指示验证点是否在 90% 置信区间内。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。如果模型拟合数据，则大约 90% 的特征应包含在 90% 的置信区间内。此字段可以包含以下值：
        ///     <bulletList>
        ///       <bullet_item>是 - 验证点位于 90% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>否 - 验证点不在 90% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>已排除 - 无法在此位置进行预测。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>Interval95 （Inside 95 Interval） - 指示验证点是否在 95% 置信区间内。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。如果模型拟合数据，则大约 95% 的特征应包含在 95% 的置信区间内。此字段可以包含以下值：
        ///     <bulletList>
        ///       <bullet_item>是 - 验证点位于 95% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>否 - 验证点不在 95% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>已排除 - 无法在此位置进行预测。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>QuanVal（验证分位数）- 要素处测量值相对于预测分布的分位数。该值的范围可以从 0 到 1，接近 0 的值表示测量值位于分布的最左尾部，接近 1 的值表示测量值位于分布的右尾部。如果许多值接近任一极端值，这可能表明预测分布不能很好地对数据进行建模，并且需要更改某些插值参数。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public GALayerToPoints(object _in_geostat_layer, object _in_locations, object _out_feature_class)
        {
            this._in_geostat_layer = _in_geostat_layer;
            this._in_locations = _in_locations;
            this._out_feature_class = _out_feature_class;
        }
        public override string ToolboxName => "Geostatistical Analyst Tools";

        public override string ToolName => "GA Layer To Points";

        public override string CallName => "ga.GALayerToPoints";

        public override List<string> AcceptEnvironments => ["extent", "geographicTransformations", "outputCoordinateSystem", "parallelProcessingFactor", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_in_geostat_layer, _in_locations, _z_field, _out_feature_class, _append_all_fields.GetGPValue(), _elevation_field, _elevation_units.GetGPValue()];

        /// <summary>
        /// <para>Input geostatistical layer</para>
        /// <para>The geostatistical layer to be analyzed.</para>
        /// <para>要分析的地统计图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input geostatistical layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_geostat_layer { get; set; }


        /// <summary>
        /// <para>Input point observation locations</para>
        /// <para>Point locations where predictions or validations will be performed.</para>
        /// <para>将执行预测或验证的点位置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input point observation locations")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_locations { get; set; }


        /// <summary>
        /// <para>Field to validate on</para>
        /// <para>If this field is left blank, predictions are made at the location points. If a field is selected, predictions are made at the location points, compared to their Z_value_field values, and a validation analysis is performed.</para>
        /// <para>如果此字段留空，则在位置点进行预测。如果选择了字段，则会在位置点处进行预测，并将其Z_value_field值进行比较，并执行验证分析。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Field to validate on")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _z_field { get; set; } = null;


        /// <summary>
        /// <para>Output statistics at point locations</para>
        /// <para><xdoc>
        ///   <para>The output feature class containing either the predictions or the predictions and the validation results.</para>
        ///   <para>The fields in this feature class can include the following fields (where applicable):</para>
        ///   <bulletList>
        ///     <bullet_item>Source_ID (Source ID)—The object ID of the source feature in the Input point observation locations.
        ///     <bulletList>
        ///       <bullet_item>The feature or object identifier of the input dataset that was used.  </bullet_item></bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Included (Included)—Indicates whether a prediction was calculated for this feature. The values in this field can be one of the following:
        ///     <bulletList>
        ///       <bullet_item>Yes—There are no problems making a prediction at this point.  </bullet_item><para/>
        ///       <bullet_item>Not enough neighbors—There are not enough neighbors to make a prediction.  </bullet_item><para/>
        ///       <bullet_item>Weight parameter is too small—The weight parameter is too small.  </bullet_item><para/>
        ///       <bullet_item>Overfilling—Overflow of floating-point calculations.  </bullet_item><para/>
        ///       <bullet_item>Problem with data transformation—The value to be transformed is outside of the supported range for the selected transformation (only in kriging).  </bullet_item><para/>
        ///       <bullet_item>No explanatory rasters—The value cannot be calculated because one of the explanatory variables is not defined. The point could be outside the extent of at least one explanatory variable raster, or the point could be on top of a NoData cell in at least one of the explanatory variable rasters. This only applies to EBK Regression Prediction models.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Predicted (Predicted)—The prediction value at this location.</bullet_item><para/>
        ///     <bullet_item>Error (Error)—The predicted value minus the value in the validation field.</bullet_item><para/>
        ///     <bullet_item>StdError (Standard Error)—The kriging standard error.</bullet_item><para/>
        ///     <bullet_item>Stdd_Error (Standardized Error)—The standardized prediction errors. Ideally, the standardized prediction errors are distributed normally.</bullet_item><para/>
        ///     <bullet_item>NormValue (Normal Value)—The normal distribution value (x-axis) that corresponds to the standardized prediction errors (y-axis) in the normal QQplot.</bullet_item><para/>
        ///     <bullet_item>CRPS (Continuous Ranked Probability Score)—The continuous ranked probability score is a diagnostic that measures the deviation from the predictive cumulative distribution function to each observed data value. This value should be as small as possible. This diagnostic has advantages over cross-validation diagnostics because it compares the data to a full distribution rather than to single-point predictions. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models.</bullet_item><para/>
        ///     <bullet_item>Interval90 (Inside 90 Percent Interval)—Indicates whether or not the validation point is inside of a 90 percent confidence interval. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models. If the model fits the data, approximately 90 percent of the features should be contained in a 90 percent confidence interval. This field can contain the following values:
        ///     <bulletList>
        ///       <bullet_item>Yes—The validation point is inside the 90 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>No—The validation point is not inside the 90 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>Excluded—A prediction cannot be made at this location.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Interval95 (Inside 95 Percent Interval)—Indicates whether or not the validation point is inside of a 95 percent confidence interval. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models. If the model fits the data, approximately 95 percent of the features should be contained in a 95 percent confidence interval. This field can contain the following values:
        ///     <bulletList>
        ///       <bullet_item>Yes—The validation point is inside the 95 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>No—The validation point is not inside the 95 percent confidence interval.  </bullet_item><para/>
        ///       <bullet_item>Excluded—A prediction cannot be made at this location.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>QuanVal (Validation Quantile)—The quantile of the measured value at the feature with respect to the prediction distribution. This value can range from 0 to 1, and values close to 0 indicate that the measured value is on the far left tail of the distribution, and values close to 1 indicate that the measured value is on the right tail of the distribution. If many values are close to either extreme, this could indicate that the prediction distributions do not model the data well, and some of the interpolation parameters need to be altered. This field is only created for Empirical Bayesian Kriging and EBK Regression Prediction models.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>包含预测或预测和验证结果的输出要素类。</para>
        ///   <para>此要素类中的字段可以包含以下字段（如果适用）：</para>
        ///   <bulletList>
        /// <bullet_item>Source_ID （源 ID） - 输入点观测点位置中源要素的对象 ID。
        ///     <bulletList>
        /// <bullet_item>所使用的输入数据集的特征或对象标识符。 </bullet_item></bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>包含 （Included） - 指示是否为此要素计算了预测。此字段中的值可以是下列值之一：
        ///     <bulletList>
        ///       <bullet_item>是 - 此时进行预测没有问题。</bullet_item><para/>
        ///       <bullet_item>没有足够的邻居 - 没有足够的邻居来做出预测。</bullet_item><para/>
        ///       <bullet_item>权重参数太小 - 权重参数太小。</bullet_item><para/>
        ///       <bullet_item>Overfilling - 浮点计算的溢出。</bullet_item><para/>
        ///       <bullet_item>数据转换问题 - 要转换的值超出了所选转换的支持范围（仅在克里金法中）。</bullet_item><para/>
        ///       <bullet_item>无解释性栅格 - 由于未定义其中一个解释变量，因此无法计算该值。该点可能位于至少一个解释变量栅格的范围之外，或者该点可能位于至少一个解释变量栅格中的 NoData 像元的顶部。这仅适用于 EBK 回归预测模型。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>预测 （Predicted） - 此位置的预测值。</bullet_item><para/>
        ///     <bullet_item>错误（错误）- 预测值减去验证字段中的值。</bullet_item><para/>
        ///     <bullet_item>StdError （Standard Error） - 克里金法标准误差。</bullet_item><para/>
        ///     <bullet_item>Stdd_Error （Standardized Error） - 标准化预测误差。理想情况下，标准化预测误差呈正态分布。</bullet_item><para/>
        ///     <bullet_item>NormValue （Normal Value） - 与正态 QQplot 中的标准化预测误差（y 轴）相对应的正态分布值（x 轴）。</bullet_item><para/>
        ///     <bullet_item>CRPS（连续排名概率分数）- 连续排名概率分数是一种诊断方法，用于测量预测累积分布函数与每个观测数据值的偏差。此值应尽可能小。与交叉验证诊断相比，此诊断具有优势，因为它将数据与完整分布进行比较，而不是与单点预测进行比较。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。</bullet_item><para/>
        /// <bullet_item>Interval90 （Inside 90 Interval） - 指示验证点是否在 90% 置信区间内。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。如果模型拟合数据，则大约 90% 的特征应包含在 90% 的置信区间内。此字段可以包含以下值：
        ///     <bulletList>
        ///       <bullet_item>是 - 验证点位于 90% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>否 - 验证点不在 90% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>已排除 - 无法在此位置进行预测。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>Interval95 （Inside 95 Interval） - 指示验证点是否在 95% 置信区间内。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。如果模型拟合数据，则大约 95% 的特征应包含在 95% 的置信区间内。此字段可以包含以下值：
        ///     <bulletList>
        ///       <bullet_item>是 - 验证点位于 95% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>否 - 验证点不在 95% 置信区间内。</bullet_item><para/>
        ///       <bullet_item>已排除 - 无法在此位置进行预测。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>QuanVal（验证分位数）- 要素处测量值相对于预测分布的分位数。该值的范围可以从 0 到 1，接近 0 的值表示测量值位于分布的最左尾部，接近 1 的值表示测量值位于分布的右尾部。如果许多值接近任一极端值，这可能表明预测分布不能很好地对数据进行建模，并且需要更改某些插值参数。此字段仅用于经验贝叶斯克里金法和 EBK 回归预测模型。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output statistics at point locations")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_feature_class { get; set; }


        /// <summary>
        /// <para>Append all fields from input features</para>
        /// <para><xdoc>
        ///   <para>Determines whether all fields will be copied from the input features to the output feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—All fields from the input features will be copied to the output feature class. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Only the feature ID value will be copied, and it will be named Source_ID on the output feature class.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定是否将所有字段从输入要素复制到输出要素类。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 输入要素中的所有字段都将复制到输出要素类。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 仅复制要素 ID 值，并在输出要素类上将其命名为 Source_ID。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Append all fields from input features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _append_all_fields_value _append_all_fields { get; set; } = _append_all_fields_value._true;

        public enum _append_all_fields_value
        {
            /// <summary>
            /// <para>ALL</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ALL")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>FID_ONLY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("FID_ONLY")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Elevation field</para>
        /// <para>The field containing the elevation of each input point. The parameter only applies to 3D geostatistical models. If the elevation values are stored as geometry attributes in Shape.Z, it is recommended to use that field. If the elevations are stored in an attribute field, the elevations must indicate distance from sea level. Positive values indicate distance above sea level, and negative values indicate distance below sea level.</para>
        /// <para>包含每个输入点的高程的字段。该参数仅适用于三维地统计模型。如果高程值在 Shape.Z 中存储为几何属性，则建议使用该字段。如果高程存储在属性字段中，则高程必须指示与海平面的距离。正值表示海平面以上距离，负值表示海平面以下距离。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Elevation field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _elevation_field { get; set; } = null;


        /// <summary>
        /// <para>Elevation field units</para>
        /// <para><xdoc>
        ///   <para>The units of the elevation field. This parameter only applies to 3D geostatistical models. If Shape.Z is provided as the elevation field, the units will automatically match the Z-units of the vertical coordinate system.</para>
        ///   <bulletList>
        ///     <bullet_item>Inch—Elevations are in inches.</bullet_item><para/>
        ///     <bullet_item>Foot—Elevations are in feet.</bullet_item><para/>
        ///     <bullet_item>Yard—Elevations are in yards.</bullet_item><para/>
        ///     <bullet_item>US mile—Elevations are in U.S. miles.</bullet_item><para/>
        ///     <bullet_item>Nautical mile—Elevations are in nautical miles.</bullet_item><para/>
        ///     <bullet_item>Millimeter—Elevations are in millimeters.</bullet_item><para/>
        ///     <bullet_item>Centimeter—Elevations are in centimeters.</bullet_item><para/>
        ///     <bullet_item>Decimeter—Elevations are in decimeters.</bullet_item><para/>
        ///     <bullet_item>Meter—Elevations are in meters.</bullet_item><para/>
        ///     <bullet_item>Kilometer—Elevations are in kilometers.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>高程字段的单位。此参数仅适用于三维地统计模型。如果将 Shape.Z 作为高程字段提供，则单位将自动与垂直坐标系的 Z 单位匹配。</para>
        ///   <bulletList>
        ///     <bullet_item>英寸 - 高程以英寸为单位。</bullet_item><para/>
        ///     <bullet_item>英尺 - 高程以英尺为单位。</bullet_item><para/>
        ///     <bullet_item>码 - 高程以码为单位。</bullet_item><para/>
        ///     <bullet_item>美国英里—高程以美国英里为单位。</bullet_item><para/>
        ///     <bullet_item>海里 - 高程以海里为单位。</bullet_item><para/>
        ///     <bullet_item>毫米—高程以毫米为单位。</bullet_item><para/>
        ///     <bullet_item>厘米 - 高程以厘米为单位。</bullet_item><para/>
        ///     <bullet_item>分米 - 高程以分米为单位。</bullet_item><para/>
        ///     <bullet_item>米 - 高程以米为单位。</bullet_item><para/>
        ///     <bullet_item>千米 - 高程以千米为单位。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Elevation field units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _elevation_units_value _elevation_units { get; set; } = _elevation_units_value._METER;

        public enum _elevation_units_value
        {
            /// <summary>
            /// <para>Inch</para>
            /// <para>Inch—Elevations are in inches.</para>
            /// <para>英寸 - 高程以英寸为单位。</para>
            /// </summary>
            [Description("Inch")]
            [GPEnumValue("INCH")]
            _INCH,

            /// <summary>
            /// <para>Foot</para>
            /// <para>Foot—Elevations are in feet.</para>
            /// <para>英尺 - 高程以英尺为单位。</para>
            /// </summary>
            [Description("Foot")]
            [GPEnumValue("FOOT")]
            _FOOT,

            /// <summary>
            /// <para>Yard</para>
            /// <para>Yard—Elevations are in yards.</para>
            /// <para>码 - 高程以码为单位。</para>
            /// </summary>
            [Description("Yard")]
            [GPEnumValue("YARD")]
            _YARD,

            /// <summary>
            /// <para>US mile</para>
            /// <para>US mile—Elevations are in U.S. miles.</para>
            /// <para>美国英里—高程以美国英里为单位。</para>
            /// </summary>
            [Description("US mile")]
            [GPEnumValue("MILE_US")]
            _MILE_US,

            /// <summary>
            /// <para>Nautical mile</para>
            /// <para>Nautical mile—Elevations are in nautical miles.</para>
            /// <para>海里 - 高程以海里为单位。</para>
            /// </summary>
            [Description("Nautical mile")]
            [GPEnumValue("NAUTICAL_MILE")]
            _NAUTICAL_MILE,

            /// <summary>
            /// <para>Millimeter</para>
            /// <para>Millimeter—Elevations are in millimeters.</para>
            /// <para>毫米—高程以毫米为单位。</para>
            /// </summary>
            [Description("Millimeter")]
            [GPEnumValue("MILLIMETER")]
            _MILLIMETER,

            /// <summary>
            /// <para>Centimeter</para>
            /// <para>Centimeter—Elevations are in centimeters.</para>
            /// <para>厘米 - 高程以厘米为单位。</para>
            /// </summary>
            [Description("Centimeter")]
            [GPEnumValue("CENTIMETER")]
            _CENTIMETER,

            /// <summary>
            /// <para>Decimeter</para>
            /// <para>Decimeter—Elevations are in decimeters.</para>
            /// <para>分米 - 高程以分米为单位。</para>
            /// </summary>
            [Description("Decimeter")]
            [GPEnumValue("DECIMETER")]
            _DECIMETER,

            /// <summary>
            /// <para>Meter</para>
            /// <para>Meter—Elevations are in meters.</para>
            /// <para>米 - 高程以米为单位。</para>
            /// </summary>
            [Description("Meter")]
            [GPEnumValue("METER")]
            _METER,

            /// <summary>
            /// <para>Kilometer</para>
            /// <para>Kilometer—Elevations are in kilometers.</para>
            /// <para>千米 - 高程以千米为单位。</para>
            /// </summary>
            [Description("Kilometer")]
            [GPEnumValue("KILOMETER")]
            _KILOMETER,

        }

        public GALayerToPoints SetEnv(object extent = null, object geographicTransformations = null, object outputCoordinateSystem = null, object parallelProcessingFactor = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(extent: extent, geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, parallelProcessingFactor: parallelProcessingFactor, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}